/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package normas;

import agentes.Agente;

/**
 *
 * @author marapao
 */
public class Norma implements Normas {

    private int violacoes;
    private int respeito;
    private double max_delta;
    private double min_delta;
    private double delta;
    private double poder;
    private int max_violacoes = 10;
    private int max_respeito = 100;

    private double variacaoDelta =  0.01;


    public boolean violou(Agente agente) {
        double julgamento = Math.random() * 100;

        if (julgamento > 50) {
            violacoes++;
            if(violacoes >= max_violacoes){
                delta += variacaoDelta;
                violacoes = 0;
            }

                if(delta > 1)
                    delta = 1;
            return true;
        }
        else{
            respeito++;
            if(respeito >= max_respeito){
                delta -= variacaoDelta;
                respeito = 0;
            }
                if(delta < 0)
                  delta = 0;
            return false;
        }

        }



    public Norma(double max_delta, double min_delta, double delta, double poder) {
        this.max_delta = max_delta;
        this.min_delta = min_delta;
        this.delta = delta;
        this.poder = poder;
    }
    public Norma() {
        this.max_delta = 0.8;
        this.min_delta = 0.3;
        this.delta = 0.5;
        this.poder = 0.4;
    }



    public double getDelta() {
        return delta;
    }

    public void setDelta(double delta) {
        this.delta = delta;
    }

    public double getMax_delta() {
        return max_delta;
    }

    public void setMax_delta(double max_delta) {
        this.max_delta = max_delta;
    }

    public int getMax_respeito() {
        return max_respeito;
    }

    public void setMax_respeito(int max_respeito) {
        this.max_respeito = max_respeito;
    }

    public int getMax_violacoes() {
        return max_violacoes;
    }

    public void setMax_violacoes(int max_violacoes) {
        this.max_violacoes = max_violacoes;
    }

    public double getMin_delta() {
        return min_delta;
    }

    public void setMin_delta(double min_delta) {
        this.min_delta = min_delta;
    }

    public double getPoder() {
        return poder;
    }

    public void setPoder(double poder) {
        this.poder = poder;
    }

    public int getRespeito() {
        return respeito;
    }

    public void setRespeito(int respeito) {
        this.respeito = respeito;
    }

    public double getVariacaoDelta() {
        return variacaoDelta;
    }

    public void setVariacaoDelta(double variacaoDelta) {
        this.variacaoDelta = variacaoDelta;
    }

    public int getViolacoes() {
        return violacoes;
    }

    public void setViolacoes(int violacoes) {
        this.violacoes = violacoes;
    }





    

    }
